//easyui validatebox  验证规则扩展

//多个验证规则       input class="easyui-validatebox" data-options="required:true,validType:['email','length[0,20]']">  
//remote ajax验证  不推荐使用      <input id="content.field1" type="text" class="easyui-validatebox" required="true" validType="remote['RyxxBean.jsp?service=isUserCardRepeat','param']"
String.prototype.replaceAll = stringReplaceAll;
function stringReplaceAll(AFindText, ARepText) {
	raRegExp = new RegExp(AFindText, "g");
	return this.replace(raRegExp, ARepText)
}

function trim(str) { // 删除左右两端的空格
	return str.replace(/(^\s*)|(\s*$)/g, "");
}

$.extend($.fn.validatebox.defaults.rules, {
	alpha : { // 只能输入字母
		validator : function(value, param) {
			if (value) {
				var regu = /^[a-zA-Z]*$/;
				var re = new RegExp(regu);
				return re.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母.'
	},
	alphanum : {
		validator : function(value, param) {
			if (value) {
				return /^([a-zA-Z0-9])*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母和数字.'
	},
	
	alph : {
		validator : function(value, param) {
			if (value) {
				return /^([a-zA-Z0-9\-])*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母、数字和-.'
	},
	
	alph1 : { //验证组织机构代码位数
		validator : function(value, param) {
			if (value) {
				return /^([a-zA-Z0-9]{8}-[0-9X]){1}$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入字母、数字和-.'
	},
	
	positive_int : {
		validator : function(value, param) {
			if (value) {
				return /^[0-9]*[1-9][0-9]*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入正整数.'
	},

	positive_num : { // 验证只能输入数字
		validator : function(value) {
			if (value) {
				return /^[0-9]*$/.test(value);
			} else {
				return true;
			}
		},
		message : '只能输入数字.'
	},

	xiaShuZGSGSYZ : { // 验证下属子公司及项目公司个数
		validator : function(value) {
			value = value.replaceAll(" ", "");
			if (value <0 || value > 65535) return false;
			if ((value.substring(0,2)=="00") || (value.substring(0,3)=="000") || (value.substring(0,4)=="0000") || (value.substring(0,5)=="00000")) return false;
			return /^[0-9]*$/.test(value);
		},
		message : '只能输入0-65535之间的的整数'
	},
	
	checkShunXu : { //验证顺序
		validator : function(value) {
			if (value < 1 || value > 100) return false;
			if (value.substring(0,2)=="00") return false;
			return /^[0-9]*[1-9][0-9]*$/.test(value);	
		},
		message : '只能输入1-100之间的数字'
	},

	minLength : {// 判断最小长度
		validator : function(value, param) {
			return value.length >= param[0];
		},
		message : '最少输入 {0} 个字符。'
	},
	maxLength : {// 判断最大长度
		validator : function(value, param) {
			// alert(1);
			return value.length <= param[0];
		},
		message : '最多输入 {0} 个字符。'
	},

	length : {
		validator : function(value, param) {
			varlen = $.trim(value).length;
			return varlen >= param[0] && varlen <= param[1];
		},
		message : "输入内容长度必须介于{0}和{1}之间."
	},
	phone : {// 验证电话号码
		validator : function(value) {
			return /^((\(\d{2,4}\))|(\d{4}\-))?(\(0\d{2,4}\)|0\d{2,4}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);
		},
		message : '格式不正确,请使用下面格式:020-88888888'
	},
	mobile : {// 验证手机号码
		validator : function(value) {
			return /^(13|15|18)\d{9}$/i.test(value);
		},
		message : '手机号码格式不正确'
	},
	idcard : {// 验证身份证
		validator : function(value) {
			return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
		},
		message : '身份证号码格式不正确'
	},
	email : {
		validator : function(value) {
			return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
		},
		message : '请输入有效的电子邮件账号(例：abc@126.com)'
	},
	intOrFloat : {// 验证整数或小数
		validator : function(value) {
			return /^\d+(\.\d+)?$/i.test(value);
		},
		message : '请输入数字，并确保格式正确'
	},
	intOrFloatLimit : {// 验证整数或小数
		validator : function(value, param) {
			value = value.replaceAll(" ", "");
			value = value.replaceAll(",", "");
			if (value.length > param[0])
				return false;
			return /^\-?\d+(\.)?(\d)?\d?$/i.test(value);
		},
		message : '可输入的最大数值为万亿元，小数点后仅保留2位，并确保格式正确(不允许输入字母、中文、空格等)'
	},
	zhuCeShiHouZBLimit : { //验证注册资本和实收资本
		validator : function (value, param) {
			if (value.indexOf(" ") >= 0) {
				return false;
			}
			value = value.replaceAll(",", "");
			if (value < -9999999999999.99 || value > 9999999999999.99) {
				return false;
			}
			return /^\-?\d+(\.)?(\d)?\d?$/i.test(value);
		},
		message : '可输入的最大数值为万亿元，小数点后仅保留2位，并确保格式正确(不允许输入字母、中文、空格等)'
	},
	pingFenBCLimit : {// 验证整数或小数
		validator : function(value, param) {
			if (value.indexOf(" ")>=0)
				return false;
			value = value.replaceAll(" ", "");
			value = value.replaceAll(",", "");
			if (value < 0 || value > 100)
				return false;
			if (value.length > param[0])
				return false;
			return /^\-?\d+(\.)?(\d)?\d?$/i.test(value);
		},
		message : '请输入长度不能大于{0}位的数字，并确保格式正确'
	},
	currency : {// 验证货币
		validator : function(value) {
			return /^\d+(\.\d+)?$/i.test(value);
		},
		message : '货币格式不正确'
	},

	chinese : {// 验证中文
		validator : function(value) {
			return /^[\u0391-\uFFE5]+$/i.test(value);
		},
		message : '请输入中文'
	},
	english : {// 验证英语
		validator : function(value) {
			return /^[A-Za-z]+$/i.test(value);
		},
		message : '请输入英文'
	},
	chaxunyz:{//只能输入汉字、字母、数字、中英文括号、-
		validator:function(value){
			return /^[a-zA-Z0-9\u4e00-\u9fa5\()\（）\-]+$/i.test(value);
		},
		message:'请勿输入特殊字符！'
	},
	chineseAndEnglish:{//只能输入中文、英文字母
		validator:function(value){
			return /^[a-zA-Z\u4e00-\u9fa5]+$/i.test(value);
		},
		message:'请输入中文或英文字母！'
	},
	dateCompare : {// 判断日期
		validator : function(value, param) {
			alert(value);
			$("#datetimeStart").val("2013-09-12");
			$('#searchForm input[name="yeWuZLMC"]').val('2013-09-12');
			return false;
		},
		message : '结束时间不能小于起始时间'
	},
	/*
	 * fileVerdict:{// 验证上传格式 validator:function(value,param){ alert(value); return false; if (value){ return /^([a-zA-Z0-9])*$/.test(value); } else { return true; } }, message:'只能上传png格式的图片.' },
	 */
	zuZhiJGDM : {// 验证组织机构代码
		validator : function(orgCode) {
			// return "" == orgCode || orgCode.length == 10;
			// return true;
			var ret = false;
			var codeVal = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ];
			var intVal = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 ];
			var crcs = [ 3, 7, 9, 10, 5, 8, 4, 2 ];
			if (!(("" == orgCode) && orgCode.length == 10)) {
				var sum = 0;
				for ( var i = 0; i < 8; i++) {
					var codeI = orgCode.substring(i, i + 1);
					var valI = -1;
					for ( var j = 0; j < codeVal.length; j++) {
						if (codeI == codeVal[j]) {
							valI = intVal[j];
							break;
						}
					}
					sum += valI * crcs[i];
				}
				var crc = 11 - (sum % 11);
				switch (crc) {
				case 10: {
					crc = "X";
					break;
				}
				default: {
					break;
				}
				}
				//alert("crc="+crc+",inputCrc="+orgCode.substring(9));
				// alert(orgCode.substring(8, 9));
				if (crc == orgCode.substring(9) && orgCode.substring(8, 9) == "-") {
					ret = true;
				}
			} else if ("" == orgCode) {
				ret = true;
			}
			return ret;
		},
		message : '请输入有效的组织机构代码'
	},

	/**
	 * 添加企业信息时验证组织机构代码是否存在
	 */
	checkZuZhiJGDMAdd : {
		validator : function(value) {
			var rules = $.fn.validatebox.defaults.rules;
			if (!rules.alph1.validator(value)) {
				return false;
			} else if (!rules.zuZhiJGDM.validator(value)) {
				return false;
			} else {
				var ret = false;
				$.ajax({
					type : 'post',
					url : 'qiYeJBXXAction!checkZuZhiJGDM.action',
					data : {
						zuZhiJGDM : value
					},
					async : false,
					success : function(jsonStr) {
						var number = (new Function("return " + jsonStr))();
						if (number) {
							ret = false;
						} else {
							ret = true;
						}
					}
				});
				return ret;
			}
		},
		message : '组织机构代码只能输入字母、数字或"-"且不重复，并确认其规范！'

	},

	checkZuZhiJGDMEdit : {
		validator : function(value, param) {
			var rules = $.fn.validatebox.defaults.rules;
			if (!rules.alph1.validator(value)) {
				return false;
			} else if (!rules.zuZhiJGDM.validator(value)) {
				return false;
			} else {
				var ret = false;
				$.ajax({
					type : 'post',
					url : 'qiYeJBXXAction!checkZuZhiJGDMEdit.action',
					data : {
						bianHao : param[0],
						zuZhiJGDM : value
					},
					async : false,
					success : function(jsonStr) {
						var number = (new Function("return " + jsonStr))();
						if (number) {// 存在
							ret = false;
						} else {// 不存在
							ret = true;
						}
					}
				});
				return ret;
			}
		},
		message : '组织机构代码只能输入字母、数字或"-"且不重复，并确认其规范！'
	},

	checkCHEN : { //中英文验证
		validator : function(value) {
			var regu = /^[a-zA-Z\u4e00-\u9fa5]+$/i;
			return regu.test(value);
		},
		message : '只能输入中文、英文字母'
	},
	
	unml : { //中文、数字、英文字母、中文括号、英文括号验证
		validator : function(value) {
			var regu = /^[a-zA-Z0-9（）()\u4e00-\u9fa5]+$/i;
			//alert(regu.test(value));
			return regu.test(value);
		},
		message : '只能输入中文、数字、字母、中文括号、英文括号'
	},
	
	unnormal : { //中文、英文字母、中文括号、英文括号验证
		validator : function(value) {
			var regu = /^[a-zA-Z（）()\u4e00-\u9fa5]+$/i;
			//alert(regu.test(value));
			return regu.test(value);
		},
		message : '只能输入中文、字母、中文括号、英文括号'
	},

	/**
	 * 客户信息添加是企业名称验证
	 */
	checkQiYeMC : {
		validator : function(value, param) {
			var rules = $.fn.validatebox.defaults.rules;
			if (trim(value) == '') {
				return false;
			} else if (!rules.maxLength.validator(value, param)) {
				return false;
			} else if (!rules.unnormal.validator(value)) {
				return false;
			} else {
				var ret = false;
				$.ajax({
					type : 'post',
					url : 'qiYeJBXXAction!check.action',
					data : {
						qiYeMC : value
					},
					async : false,
					success : function(jsonStr) {
						var number = (new Function("return " + jsonStr))();
						if (number) {// 存在
							ret = false;
						} else {// 不存在
							ret = true;
						}
					}
				});
				return ret;
			}
		},
		message : '企业名称只能输入中文、字母、中文括号或英文括号，确认企业名称不为空且不重复，并确认企业名称不能超过{0}个字符。'
	},

	/**
	 * 客户信息修改是企业名称验证
	 */
	checkQiYeMCEdit : {
		validator : function(value, param) {
			var rules = $.fn.validatebox.defaults.rules;
			if (trim(value) == '') {
				return false;
			} else if (!rules.maxLength.validator(value, param)) {
				return false;
			} else if (!rules.unnormal.validator(value)) {
				return false;
			} else {
				var ret = false;
				$.ajax({
					type : 'post',
					url : 'qiYeJBXXAction!checkEdit.action',
					data : {
						bianHao : param[1],
						qiYeMC : value
					},
					async : false,
					success : function(jsonStr) {
						var number = (new Function("return " + jsonStr))();
						if (number) {// 存在
							/*
							 * parent.dagong.messagerShow({ msg : '该企业已存在，请重新输入企业名称！', title : '提示' });
							 */
							ret = false;
						} else {// 不存在
							ret = true;
						}
					}
				});
				return ret;
			}
		},
		message : '企业名称只能输入中文、字母、中文括号或英文括号，确认企业名称不为空且不重复，并确认企业名称不能超过{0}个字符。'
	},

	/**
	 * 下拉框必选验证
	 */
	selectValueRequired : {
		validator : function(value, param) {
			if (value == "" || value.indexOf('选择') >= 0 || value.indexOf('全部') >= 0) {
				return false;
			} else {
				return true;
			}
		},
		message : '该下拉框为必选项'
	},

	checkHeTongH : {
		validator : function(value) {
			var ret = false;
			$.ajax({
				type : 'post',
				url : 'renWuJBXXAction!check.action',
				data : {
					heTongH : value
				},
				async : false,
				success : function(jsonStr) {
					var number = (new Function("return " + jsonStr))();
					if (number) {// 存在
						ret = false;
					} else {// 不存在
						ret = true;
					}
				}
			});
			return ret;
		},
		message : '合同号已存在，请重新输入！'
	},

	checkDengLuM : {
		validator : function(value) {
			var ret = false;
			$.ajax({
				type : 'post',
				url : 'yongHuAction!check.action',
				data : {
					dengLuM : value
				},
				async : false,
				success : function(jsonStr) {
					var number = (new Function("return " + jsonStr))();
					if (number) {// 存在
						ret = false;
					} else {// 不存在
						ret = true;
					}
				}
			});
			return ret;
		},
		message : '登录名已存在，请重新输入！'
	},

	checkDengLuMEdit : {
		validator : function(value, param) {
			var ret = false;
			$.ajax({
				type : 'post',
				url : 'yongHuAction!checkEdit.action',
				data : {
					bianHao : param[0],
					dengLuM : value
				},
				async : false,
				success : function(jsonStr) {
					var number = (new Function("return " + jsonStr))();
					if (number) {// 存在
						ret = false;
					} else {// 不存在
						ret = true;
					}
				}
			});
			return ret;
		},
		message : '登录名已存在，请重新输入！'
	},

	checkXiangMuMC : {
		validator : function(value) {
			var ret = false;
			$.ajax({
				type : 'post',
				url : 'renWuFP_DGGJAction!check.action',
				data : {
					xiangMuMC : value
				},
				async : false,
				success : function(jsonStr) {
					var number = (new Function("return " + jsonStr))();
					if (number) {// 存在
						ret = false;
					} else {// 不存在
						ret = true;
					}
				}
			});
			return ret;
		},
		message : '该项目已存在，请更换项目名称！'
	},
	reg : { // 自定义正则校验 第一个是正则表达式，第二个是错误提示信息
		validator : function(value, param) {
			var m_reg = new RegExp(param[0]); // 传递过来的正则字符串中的"\"必须是"\\"
			if (!m_reg.test(value)) {
				$.fn.validatebox.defaults.rules.reg.message = param[1];
				return false;
			} else {
				return true;
			}
		},
		message : ''
	},
	// id="txt_CustIdentity" class="easyui-validatebox txt-number" style="width:150px"
	// validType="Composite_validation['^\\d{14}(\\d{1}|\\d{4}|\\d{3}x),'身份证号码为15或18位数字！','member.ashx?method=check_Identityid','Identityid','该身份证号已办卡！']" missingMessage="请输入身份证号码！" required="true" />
	composite_validation : { // 符合验证方式 用方式如下：（五个参数，第一个是正则表达式，第二个是错误提示信息，第三个是调用的url，第四个是传递给服务器的参数名称，第五个是错误提示信息）
		validator : function(value, param) {
			var m_reg = new RegExp(param[0]); // 传递过来的正则字符串中的"\"必须是"\\"
			if (!m_reg.test(value)) {
				$.fn.validatebox.defaults.rules.composite_validation.message = param[1];
				return false;
			} else {
				var postdata = {};
				postdata[param[3]] = value;
				var result = $.ajax({
					url : param[2],
					data : postdata,
					async : false,
					type : "post"
				}).responseText;
				if (result == "false") {
					$.fn.validatebox.defaults.rules.composite_validation.message = param[4];
					return false;
				} else {
					return true;
				}
			}
		},
		message : ''
	},
	maxValue : {
		validator : function(value, param) {
			var bl = false;
			if (param[0] == '[10,9]') {
				bl = value <= 10 && value >= 9;
			} else if (param[0] == '(9,8]') {
				bl = value >= 8 && value < 9;
			} else if (param[0] == '(8,6]') {
				bl = value >= 6 && value < 8;
			} else {
				bl = value < 6 && value >= 0;
			}
			if (bl) {
				var str = '#' + param[1] + ' > td > input';
				var inps = $(str);
				for (i = 0; i < inps.length - 1; i++) {
					if (inps[i].value != value) {
						inps[i].value = '';
						$(inps[i]).removeClass('validatebox-invalid');
					}
				}
				// var zfinp = $("#"+param[2]+"_"+param[1]);
				// var grade = value * parseInt(param[2]);
				// zfinp.val(grade);
			} else {
				var str = '#' + param[1] + ' > td > input';
				var inps = $(str);
				for (i = 0; i < inps.length - 1; i++) {
					if (inps[i].value == value) {
						break;
					}
				}
			}
			return bl;
		},
		message : "分值超过范围，请重新输入，此考核项的分值范围为：{0}。"
	}

});
